home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / td187src.lzh / MTAREA.D < prev    next >
Text File  |  1991-06-08  |  3KB  |  80 lines

  1. DEFINITION MODULE mtArea;
  2.  
  3. FROM MagicSys   IMPORT  Nil, Null,
  4.                         Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7,
  5.                         Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14, Bit15,
  6.                         LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL, sBITSET,
  7.                         lWORD, lINTEGER, lCARDINAL, lBITSET;
  8.  
  9.  
  10. (*-----------------------------------------------------------------------*
  11.  * WICHTIG:  Rechtecke bestehen PRINZIPIELL aus Koordinate (x, y),       *
  12.  * Breite (w) und Höhe (h)!!!                                            *
  13.  *-----------------------------------------------------------------------*)
  14.  
  15. TYPE  AREA;
  16.                         
  17.  
  18. PROCEDURE NewAREA (VAR a: AREA): BOOLEAN;
  19. (* Legt neue AREA-Variable an, FALSE wenn nicht gelungen  *)
  20.  
  21. PROCEDURE DisposeAREA (VAR a: AREA);
  22. (* Gibt die AREA-Variable frei, falls noch Bildspeicher alloziert ist,
  23.  * wird dieser ebenfalls freigegeben *)
  24.  
  25. PROCEDURE FreeArea (a: AREA);
  26. (* Gibt den allozierten Bildspeicher frei *)
  27.  
  28. PROCEDURE SaveArea (a: AREA; rect: ARRAY OF LOC): BOOLEAN;
  29. (* Sichert einen Bildschirmbereich ins RAM. FALSE, wenn nicht genügend
  30.  * RAM zur Verfügung stand. Ist bereits ein Bildspeicher alloziert und
  31.  * dieser für das zu sichernde Teilstück zu klein, wird dieser freigegeben
  32.  * und ein neues Teilsstück alloziert.
  33.  *)
  34.  
  35. PROCEDURE CopyArea (a: AREA; x, y: sINTEGER);
  36. (* Kopiert einen mit SaveArea gespeicherten Bereich an Position x, y *)
  37.  
  38. PROCEDURE RestoreArea (a: AREA);
  39. (* Blittet einen mit SaveArea gespeicherten Bereich wieder auf die
  40.  * Originalposition am Schirm
  41.  *)
  42.  
  43. CONST   MOVEUP =        0;
  44.         MOVEDOWN =      1;
  45.         MOVELEFT =      2;
  46.         MOVERIGHT =     3;
  47.  
  48. PROCEDURE MoveArea (a: AREA; pixel, direction: sINTEGER; VAR x, y: sINTEGER);
  49. (* "Bewegt" einen AREA-Bereich um eine Anzahl Pixel (pixel) in die
  50.  * Richtung direction.  Dabei wird wie folgend vorgegangen:
  51.  *
  52.  *  MoveArea (area, 5, MOVEUP);
  53.  *
  54.  *  +----------------------------+
  55.  *  |XXXXXXXXXXXXXXXXXXXXXXXXXXXX|
  56.  *  +----------------------------+
  57.  *  |                            |
  58.  *  |                            |
  59.  *  |                            |
  60.  *  |                            |
  61.  *  |                            |
  62.  *  |                            |
  63.  *  |                            |
  64.  *  |                            |
  65.  *  +----------------------------+
  66.  *  |****************************|
  67.  *  +----------------------------+
  68.  *
  69.  * Zuerst wird die alte Bildschirmfläche (X) im in Frage kommenden Bereich
  70.  * wieder hergestellt.  Die gesamte Fläche wird intern um 5 Pixel nach unten
  71.  * geschoben, die untersten 5 Pixel der Fläche * gehen dabei verloren. 
  72.  * Anschließend wird vom Bildschirm an der aktuellen Position 5 Pixel-Reihen in
  73.  * die oberen Pixel der Fläche (X) kopiert.
  74.  *
  75.  * In x,y wird die neue Position des Rechtecks geliefert.
  76.  *)
  77.  
  78. END mtArea.
  79.  
  80.